package main

/**
0                命令成功结束
1                通用未知错误
2                误用shell命令
126            命令不可执行
127            没找到命令
128            无效退出参数
128+x        Linux 信号x的严重错误
130            Linux 信号2 的严重错误，即命令通过SIGINT（Ctrl＋Ｃ）终止
255            退出状态码越界
————————————————
*/
import (
	"fmt"
	"os/exec"
)

func main() {
	//尽量在头部定义所有用到的变量，一是可读性，二是:=的方式不能用goto语句
	var (
		cmdYes *exec.Cmd
		err    error
		output []byte
	)
	//win下注意命令路径和两条命令之间的;，并且这个解析器可以执行多个命令或者执行xxx/php php--ini
	//cmdYes = exec.Command("C:\\Program Files\\Git\\bin\\sh.exe", "-c", "sleep 2;ls -l")
	//在利星行dell台式机上
	cmdYes = exec.Command("C:\\Program Files\\Git\\bin\\bash.exe", "-c", "sleep 2;ls -l")

	//执行子进程命令，以及捕获子进程的输出（通过操作系统底层pipe）
	if output, err = cmdYes.CombinedOutput(); err != nil {
		fmt.Println("error is↓")
		fmt.Println(err)
		return
	} else {
		//打印子进程的输出
		fmt.Println("child output")
		//将字节数组转换成字符串
		fmt.Println(string(output))
	}

	fmt.Println("main over")
}
